import axios from 'axios'
import router from "../router/router";
import apiUrl from "../config/apiUrls";
import {clearSessionStorage, notify} from "../utils/commonScript";
import {getCookies} from "../utils";

const instance = axios.create({
  baseURL: apiUrl.baseUrl,
  timeout: 60000,
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache'
  },
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  config.headers.token = getCookies();
  const appId = sessionStorage.getItem('appId') || null
  config.headers['app-id'] =appId || '';

  if(appId && config.method === 'get') {
    config.params.appId = appId;
  } else if (config.method === 'post' || config.method === 'put') {
    if (appId && config.data) {
      config.data.appId = appId
    }
  }
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function ({data}) {

  if (data.code === 0) {
    return data
  }
  if (data.code === 401) {
    clearSessionStorage();
    router.push({
      path: '/login'
    })
    return false;
  }
  // 对响应数据做点什么
  notify(data.msg, 'error')

  return Promise.reject(data);
}, function (error) {
  // 对响应错误做点什么
  notify('网络错误', 'error')
  return Promise.reject(error);
});

export default instance
